import axios from 'axios';
import { ElMessage } from 'element-plus'

import { userStore } from '@/stores'
import router from '@/router';

const http = axios.create({
  timeout: 60000,
});

// 添加请求拦截器
http.interceptors.request.use(function (config) {
    // 在发送请求之前做些什么
    // 可以在组件中的任意位置访问 `store` 变量 ✨
    const store = userStore()
    const tokenName = store.userInfo.tokenName
    const tokenValue = store.userInfo.tokenValue
    if(tokenName && tokenValue){
        config.headers[tokenName] = tokenValue
    }
    return config;
}, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
});

// 添加响应拦截器
http.interceptors.response.use(function (res) {
    // 对响应数据做点什么
    if(res.status == 401 || res.status == 403){
        ElMessage.error("没有当前数据权限")
    }
    else if(res.status == 404){
        ElMessage.error("未获取到资源")
    }

    //登录拦截
    let resData = res.data
    if(resData.code == -1){
        ElMessage.error(resData.msg)
        router.push('/login')
    }
    else if(resData.code == 500){
        console.log('响应数据 ==> {}', resData);
        ElMessage.error(resData.msg)
    }
    return resData;
}, function (error) {
    console.log('请求出错 ==> {}', error);
    if(error.status == 404){
        router.push('/404')
    }
    // 对响应错误做点什么
    let res = JSON.parse(error.request.response)
    if(res.code == -1){
        ElMessage.error(res.msg)
        router.push('/login')
    }
    else{
        return Promise.reject(res.message);
    }
});


export default http;